Transaction Language 1 (TL1) is a widely used management protocol and is a standard man-machine language to manage network elements. Simple Network Management Protocol (SNMP) is an Internet-standard protocol for managing devices on IP networks. It is used in network management systems to monitor network-attached devices for conditions that warrant administrative attention. SNMP polling is used to send SNMP requests to network devices to retrieve information. Network Management standards such as SNMP, TL1 and others are in use in many networks, but these standards do not provide the ability for network devices to dynamically stream new performance measurements to a collection agent. It is also desirable to allow the network device to stream different performance measurements at different intervals depending on the nature of the said measurements.
Given that a centralized collection agent may handle a very large number of networking devices, the networking traffic and the overall load needs to be minimized. This is an issue with SNMP and related standards.
Depending on the type of network device, performance metrics might be required to fully describe how the device will perform. This is particularly important when the device is under a high network load. Metrics that are expressed in terms such as Packets per Second (P/S), Connections per Second (C/S), Transactions per Second (T/S), and Maximum Concurrent Connections (MCC) provide information that can be vital to a more complete understanding of the device performance characteristics. For example, routers and switches are generally considered to be stateless devices because they forward each packet independently. Metrics such as T/S and P/S are sufficient to describe the performance of these devices. However, devices like firewalls, intrusion prevention systems, and load balancers, which create and maintain state tables to forward packets, require additional metrics, such as C/S and MCC, to fully and accurately describe their performance.
Current network management protocols and data collection techniques have some important limitations, particularly in the context of managing large Ethernet Services deployments, especially when Service Operation Administration and Management (SOAM) is used to monitor and enforce strict Service Level Assurance (SLA) performance guarantees. Any polling method where the collection agent explicitly attempts to retrieve the performance measurements from each network device in turn usually experiences significant scalability challenges. Furthermore, when deploying a potentially large number of networking devices that provide performance measurements, it may be difficult to ensure that all devices share the same version of firmware or report the same range (or set) of measurements. Finally, the encoding of the performance measurements may also differ among the various networking devices providing these measurements.
There is therefore a need to allow a network device to provide information about the set of measurements it can provide and the format of these measurements in an abstract way that can be understood by a centralized collection agent without the need to install a more recent version of the collection agent. The collection of the management and SOAM measurement data also needs to be optimized to eliminate the overhead associated with standards such as SNMP and TL1.
The abstracted definition should be able to support various data representations and be extensible. A MetaModel is a model that defines the components of a conceptual model, process, or system. A model is an abstraction of aspects in the real world; a MetaModel is another abstraction, highlighting properties of the model itself. MetaModeling is the construction of a collection of concepts (things, terms, etc.) within a certain domain.
Common uses for MetaModels are:    As a schema for semantic data that needs to be exchanged or stored;    As a language that supports a particular method or process;    As a language to express additional semantics of existing information.
One of the techniques to implement MetaModels in this context is Byte Code Enhancement. In order to store instances of a class into data store, a class has to be persistence capable. There are different ways to make a class persistence capable. One of the ways is Byte Code Enhancement. When a Java class is compiled, a class file is generated. It contains the byte code. To make a class persistence capable, some extra code will be added to the source. In order to make the process transparent, byte code modification can be done. So this works even if you don't have the source code. The enhancement is a post compilation step and this approach is completely transparent to the Developer. Javassist (Java Programming Assistant) makes Java byte code manipulation simple. It is a class library for editing byte codes in Java; it enables Java programs to define a new class at runtime and to modify a class file when the Java Virtual Machine (JVM) loads it.
Metadata is defined as data providing information about one or more aspects of the data. Metadata is data about data; it is a collection of device specific unique data attributes.
MetaModels are collections of MetaData definitions. The key functional value that MetaModels offer is the capability to define unique sets of data definitions associated with model components.